#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
namespace Cephei.QL.Math.Statistics
{
     // <summary> 
	// ! This class accumulates a set of data and returns their statistics (e.g: mean, variance, skewness, kurtosis, error estimation, percentile, etc.) based on the empirical distribution (no gaussian assumption)  It doesn't suffer the numerical instability problem of IncrementalStatistics. The downside is that it stores all samples, thus increasing the memory requirements.
	// </summary>
    [Guid ("31FA5228-10AE-4ade-906D-0BB0CF9B8F1B"),ComVisible(true)]
	public interface IGeneralStatistics 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 IGeneralStatistics Add(Double value, Microsoft.FSharp.Core.FSharpOption<Double> weight);
        
		 Double ErrorEstimate {get;}
        
		 Double Kurtosis {get;}
        
		 Double Max {get;}
        
		 Double Mean {get;}
        
		 Double Min {get;}
        
		 Double Percentile(Double y);
        
		 IGeneralStatistics Reset {get;}
        
		 UInt64 Samples {get;}
        
		 Double Skewness {get;}
        
		 IGeneralStatistics Sort {get;}
        
		 Double StandardDeviation {get;}
        
		 Double TopPercentile(Double y);
        
		 Double Variance {get;}
        
		 Double WeightSum {get;}
    }

    // <summary> 
	// ! This class accumulates a set of data and returns their statistics (e.g: mean, variance, skewness, kurtosis, error estimation, percentile, etc.) based on the empirical distribution (no gaussian assumption)  It doesn't suffer the numerical instability problem of IncrementalStatistics. The downside is that it stores all samples, thus increasing the memory requirements. Factory
	// </summary>
   	[ComVisible(true)]
    public interface IGeneralStatistics_Factory // : Collection_Factory<IGeneralStatistics, ICell<IGeneralStatistics>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    IGeneralStatistics Create ();
    }
}

